var MyRequest=(new function request() {
	/**
	 * 创建特定个是的上传参数
	 * @param {String} params - 接口需要上传的参数的json格式
	 * @param {String} token - app token码，如果空，则传入“null”字符
	 * @param {String} userid - 用户id，如空传0
	 * @param {Object} keyword - 接口关键字
	 */
	function createParam(params, token, userid, keyword) {
		console.log('createParam-----params, token, userid, keyword==='+JSON.stringify(params)+','+ token+','+ userid+','+ keyword);
		var ps;
		var sign;
		var time = new Date().getTime();
		params = JSON.stringify(params);
		params+='';
		if(token==''||token==null){
			token='null';
		}
		if(userid==null||userid==''){
			userid = 0;
		}
		sign = serverMd5(params, token, userid, time, keyword, 'niulang2016');
		ps = {
			values : {
				params : params,
				token : token,
				userid : userid,
				time : time,
				keyword : keyword,
				sign : sign
			}
		};
		return ps;
	}

	/**
	 * md5签名
	 * @param {Object} params - 接口需要上传的参数的json的string格式
	 * @param {Object} token - app token码，如果空，则传入“null”字符
	 * @param {Object} userid - 用户id，如空传0
	 * @param {Object} time - 时间戳格式
	 * @param {Object} keyword - 接口关键字
	 * @param {Object} key - key为协商密钥(传输中不可见)
	 */
	function serverMd5(params, token, userid, time, keyword, key) {
		var str = 'keyword' + '=' + keyword + '&' + 'params=' + params + '&' + 'time=' + time + '&' + 'token=' + token + '&' + 'userid=' + userid + '&' + 'key=' + key;
		console.log('serverMd5----str=' + str);
		return hex_md5(str);
	}

	/**
	 * 请求服务器的函数
	 * @param {String} url - 请求url
	 * @param {Object} data - 上传参数
	 * @param {Object} callback - 回调函数对象
	 * @param {Object} tag - 请求标记，以区分是请求哪个url的。
	 */
	function requestMethod(url, data, callback, tag) {
		console.log('requestMethod--in--' + 'url=' + url + '   data=' + data);
		for (var x in data.values) {
			console.log('请求参数:  ' + x + '=' + data.values[x]);
		}
		
		api.ajax({
			url : url,
			method : 'post',
			data : data,
			tag : tag
		}, function(ret, err) {
			console.log('requestMethod--Result---tag='+tag+'ret=' + JSON.stringify(ret) + '     err=' + JSON.stringify(err));
			if (ret) {
				callback(ret);
			} else {
				callback(false);
			}
		});
	}
	this.requestMethod=requestMethod;
	this.createParam=createParam;
}());